package com.ssd.api.payment.dto.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * 交易单状态枚举
 *
 * @author zzj
 * @version 1.0
 */
public enum TradingStateEnum {

    // 付款中状态
    FKZ(2, "付款中"),
    // 付款失败状态
    FKSB(3, "付款失败"),
    // 已付款状态
    YJS(4, "已付款"),
    // 取消订单状态
    QXDD(5, "取消订单"),
    // 免单状态
    MD(6, "免单"),
    // 挂账状态
    GZ(7, "挂账");

    // MyBatis Plus枚举注解，用于数据库中枚举值的存储
    @EnumValue
    private final Integer code;
    // 枚举描述，用于界面展示或解释枚举含义
    @JsonValue
    private final String value;

    // 构造函数，初始化枚举代码和描述
    TradingStateEnum(Integer code, String value) {
        this.code = code;
        this.value = value;
    }

    // 获取枚举代码
    public Integer getCode() {
        return this.code;
    }

    // 获取枚举描述
    public String getValue() {
        return this.value;
    }

    /**
     * 根据枚举的value属性获取对应的枚举实例。
     *
     * @param value 枚举的value属性值
     * @return 对应的枚举实例，如果找不到则返回null
     */
    public static TradingStateEnum fromValue(String value) {
        for (TradingStateEnum state : values()) {
            if (state.getValue().equals(value)) {
                return state;
            }
        }
        return null; // 或者抛出异常，取决于业务逻辑需求
    }
}